package org.crystal.tradecraft.strategy;

import org.crystal.tradecraft.model.binance.trade.OrderResponse;
import org.crystal.tradecraft.provider.TradeActionsProvider;
import org.ta4j.core.BaseStrategy;
import org.ta4j.core.Rule;
import org.ta4j.core.num.Num;

public abstract class TradeStrategy extends BaseStrategy {

    public TradeStrategy(String name, Rule entryRule, Rule exitRule, int unstableBars) {
        super(name, entryRule, exitRule, unstableBars);
    }

    public TradeStrategy(String name, Rule entryRule, Rule exitRule) {
        super(name, entryRule, exitRule);
    }

    public TradeStrategy(Rule entryRule, Rule exitRule, int unstableBars) {
        super(entryRule, exitRule, unstableBars);
    }

    public TradeStrategy(Rule entryRule, Rule exitRule) {
        super(entryRule, exitRule);
    }

    public abstract OrderResponse enter(TradeActionsProvider actionsProvider, Num currentPrice, String symbol);

    public abstract OrderResponse exit(TradeActionsProvider actionsProvider, Num currentPrice, String symbol);
}
